package com.yike.user.service;

import com.yike.user.entity.Shop;
import com.yike.user.param.*;
import com.yike.common.base.BaseService;
import com.yike.common.pagination.Paging;
import com.yike.user.vo.*;

import java.util.List;

/**
 * 店铺表 服务类
 *
 * @author Sakura
 * @since 2024-08-23
 */
public interface ShopService extends BaseService<Shop> {

    /**
     * 保存
     *
     * @param shopParam
     * @return
     * @throws Exception
     */
    boolean saveShop(ShopParam shopParam) throws Exception;

    boolean createAgentShop(AgentCreateShopParam agentCreateShopParam) throws Exception;

    /**
     * 修改
     *
     * @param shopParam
     * @return
     * @throws Exception
     */
    boolean updateShop(ShopParam shopParam) throws Exception;

    /**
     * 删除
     *
     * @param shopNo
     * @return
     * @throws Exception
     */
    boolean deleteShop(String shopNo) throws Exception;

    ShopVo getShop(String shopNo) throws Exception;

    /**
     * 获取分页对象
     *
     * @param shopPageParam
     * @return
     * @throws Exception
     */
    Paging<ShopVo> getUserShopList(ShopPageParam shopPageParam) throws Exception;

    Paging<ShopVo> getAgentShopList(ShopPageParam shopPageParam) throws Exception;

    Paging<ShopVo> getAgentCreateShopList(ShopPageParam shopPageParam) throws Exception;

    Paging<ShopVo> getSubAgentShopList(SubAgentShopPageParam subAgentShopPageParam) throws Exception;

    ShopVo scanCode(ScanShopCodeParam scanShopCodeParam);

    ShopVo chooseShop(String shopNo);

    List<ShopVo> getAroundShopList(AroundShopParam aroundShopParam);

    boolean getCloudGarrisonFlag();

    boolean setCloudGarrisonFlag(SetCloudGarrisonFlagParam setCloudGarrisonFlagParam);

    boolean shopBinding(ShopBindingParam shopBindingParam) throws Exception;

    Paging<ShopBindingVo> getShopBindingList(ShopBindingPageParam shopBindingPageParam) throws Exception;

    ShopBindingVo getShopBinding(Long applyId) throws Exception;

    boolean checkShopBinding(CheckShopBindingParam checkShopBindingParam) throws Exception;

    boolean adjustPrice(AdjustPriceParam adjustPriceParam) throws Exception;

    AdjustPriceVo getShopAdjustPrice() throws Exception;

    ShopDataStatisticsVo getShopDataStatistics(ShopDataStatisticsParam shopDataStatisticsParam) throws Exception;

    Paging<ShopGarrisonDataVo> getShopGarrisonDataList(ShopGarrisonDataPageParam shopGarrisonDataPageParam) throws Exception;

}
